男女配对问题

import random
l1=[]
for x in range(10000):
    l1.append(int(random.normalvariate(50,20)))
l2=[(x,x+int(random.normalvariate(5,10)))for x in l1]
lnan1=[]
for x in range(10000):
    lnan1.append(int(random.normalvariate(50,30)))
lnan2=[(x,x-int(random.normalvariate(3,5)))for x in lnan1]

def duibi(a1,b1):
    lv=a1
    ln=b1
    l3=[]
    l4=[]
    for x in range(len(lv)):
        if lv[x][0]>ln[x][1]  and ln[x][0]>lv[x][1]:
            pass
        else:
            l3.append(lv[x])
            l4.append(ln[x])
            #女性数列随机排列用于下一次比较
            random.shuffle(l3)
    return l3,l4

def cishuhoujieguo(n,a,b):
    s1=0
    s2=0
    a,b=(a,b)
    for x in a:
        s1 += x[0]
        s2 += x[1]
        g=len(a)
        d_1=s1//g
        d_2=s2//g
        print(('第%d后,剩余%d')%(n,g))
        print('平均分',d_1)
        print('平均要求',d_2)
    return n-1,a,b


if __name__=='__main__':
    a,b=duibi(l2,lnan2)
    for x in range(200):
        c,d=duibi(a,b)
        a,b=duibi(c,d)
        cishuhoujieguo(500,a,b)
    print(a,b,c,d)
代码的核心思想是通过正太分布的随机数 给女性男性自身价值赋予随机分数
再给自己对方的期望价值赋予不同的分数,区别是女性期望更高,男性期望不变或者略低。
加入期望都符合 那就配对成功


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值